//
//  YKHTTPSignatureManager.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/6/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * HTTP请求签名管理器
 * 负责处理请求参数的签名生成和公共参数添加
 */
@interface YKHTTPSignatureManager : NSObject

/**
 * 为请求参数生成签名
 * @param parameters 原始请求参数
 * @param signKey 签名密钥
 * @return 包含签名的完整参数字典
 */
+ (NSDictionary *)signParameters:(NSDictionary *)parameters withKey:(NSString *)signKey;

/**
 * 添加公共参数到请求参数中
 * @param parameters 原始请求参数
 * @param gameVersion 游戏版本号
 * @param sdkVersion SDK版本号
 * @param timezone 时区
 * @return 包含公共参数的参数字典
 */
+ (NSDictionary *)addCommonParameters:(NSDictionary *)parameters
                          gameVersion:(NSString *)gameVersion
                           sdkVersion:(NSString *)sdkVersion
                             timezone:(NSString *)timezone;

/**
 * 生成完整的请求参数（包含公共参数和签名）
 * @param parameters 原始请求参数
 * @param signKey 签名密钥
 * @param gameVersion 游戏版本号
 * @param sdkVersion SDK版本号
 * @param timezone 时区
 * @return 完整的请求参数字典
 */
+ (NSDictionary *)buildRequestParameters:(NSDictionary *)parameters
                                 signKey:(NSString *)signKey
                             gameVersion:(NSString *)gameVersion
                              sdkVersion:(NSString *)sdkVersion
                                timezone:(NSString *)timezone;

/**
 @brief 生成 Postman 使用的参数,用于调试
 @param parameters 原始参数
 @param signKey 签名密钥
 @param gameVersion 游戏版本
 @param sdkVersion SDK版本
 @param timezone 时区
 @return 适用于 Postman "Bulk Edit" 模式的字符串
 */
+ (NSString *)generatePostmanParametersWithOriginalParams:(NSDictionary *)parameters
                                                  signKey:(NSString *)signKey
                                              gameVersion:(NSString *)gameVersion
                                               sdkVersion:(NSString *)sdkVersion
                                                 timezone:(NSString *)timezone;

@end

NS_ASSUME_NONNULL_END